`timescale 1ns / 1ps

module init_paleta(filas_i,columnas_i,posicion_paleta_i,paleta_o,paleta_rgb_o);
	
	//ENTRADAS
	input [9:0]filas_i;
	input [9:0]columnas_i;
	input [9:0]posicion_paleta_i;
	
	//SALIDAS
	output paleta_o;
	output [7:0]paleta_rgb_o;

	//VARIABLES DE RELIEVE
	wire paleta_con_esquinas, tiene_esquinas;
	wire [5:0] tipo_pixel;
	wire [2:0] estado_paleta;
	reg [7:0] forma_paleta;

	//DETERMINA LA FORMA QUE POSEE LA PALETA EN DETERMINADO PUNTO
	always @*
	begin
		case (tipo_pixel)
			6'd0: forma_paleta = 8'b00111100;
			6'd1: forma_paleta = 8'b01111110;
			6'd62: forma_paleta = 8'b01111110;
			6'd63: forma_paleta = 8'b00111100;
			default: forma_paleta = 8'b11111111;
		endcase
	end
	
   //ASIGNACIONES QUE SE ENCARGAN DE REVISAR SI SE DEBE PINTAR LA PALETA EN DETERMINADO
	//PUNTO, ES DECIR, SI SE ENCUENTRA EN UNA ESQUINA O NO
	assign tipo_pixel = columnas_i - posicion_paleta_i;
	assign estado_paleta =  filas_i - 15;
	assign tiene_esquinas =  forma_paleta[estado_paleta];
	
	//ASIGNACIÓN SECUENCIAL DE LA PALETA SEGÚN SEA EL VALOR DE LA FILA Y LA COLUMNA
	assign paleta_con_esquinas = (filas_i >= 15) && (filas_i <= 22) &&
							    (columnas_i >= posicion_paleta_i) && (columnas_i <= posicion_paleta_i + 63);
	
	//SE DEFINE EL COLOR DEL QUE SE PINTARÁN LA BOLA
	assign paleta_rgb_o = 8'b11011110;
		
	//REVSION FINAL DE SI SE DEBE O NO PINTAR LA BOLA
	assign paleta_o = paleta_con_esquinas && tiene_esquinas;
	
endmodule
